package com.pethub.dao;

import java.io.Serializable;
import java.util.List;

/**
 * 创建时间：2017-12-3
 *
 * @author harden
 * @version 1.0
 *
 * Dao通用接口
 *
 *
 * load：缓存到二级缓存
 *
 * get：更新到数据中，分不清get和load则统一用get,先把load实现了回头性能调优用，虽然我也不会
 *
 * findAll：提供通用的查询方法
 *
 * save:提供实体保存方法
 *
 * saveorupdate：会根据实体是否存在选择更新或者插入
 *
 * delete:删除一个实体类
 *
 * flush:将缓存中输出到数据库中
 */

interface GenericDao<T, PK extends Serializable> {

    T load(PK id) throws  Exception;

    T get(PK id) throws  Exception;

    List<T> findAll(String hql) throws Exception;

    T save(T entity) throws  Exception;

    void saveOrUpdate(T entity) throws  Exception;

    void delete(PK id) throws Exception;

    void flush() throws  Exception;
}